package com.cg.mapper;

import com.cg.dto.InterviewSessionDTO;
import com.cg.dto.InterviewMessageDTO;
import com.cg.dto.InterviewEvaluationDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

@Mapper
public interface InterviewSessionMapper {
    
    /**
     * 创建面试会话
     */
    int createSession(InterviewSessionDTO session);
    
    /**
     * 根据ID获取面试会话
     */
    InterviewSessionDTO getSessionById(@Param("id") Long id);
    
    /**
     * 根据用户ID获取面试会话列表
     */
    List<InterviewSessionDTO> getSessionsByUserId(@Param("userId") Long userId);
    
    /**
     * 根据面试ID获取面试会话
     */
    InterviewSessionDTO getSessionByInterviewId(@Param("interviewId") Long interviewId);
    
    /**
     * 更新面试会话状态
     */
    int updateSessionStatus(@Param("id") Long id, @Param("status") String status);
    
    /**
     * 删除面试会话
     */
    int deleteSession(@Param("id") Long id, @Param("userId") Long userId);
    
    /**
     * 添加面试消息
     */
    int addMessage(InterviewMessageDTO message);
    
    /**
     * 获取会话的所有消息
     */
    List<InterviewMessageDTO> getMessagesBySessionId(@Param("sessionId") Long sessionId);
    
    /**
     * 获取会话的消息数量
     */
    int getMessageCountBySessionId(@Param("sessionId") Long sessionId);
    
    /**
     * 保存面试评估结果
     */
    int saveEvaluation(InterviewEvaluationDTO evaluation);
    
    /**
     * 根据会话ID获取评估结果
     */
    InterviewEvaluationDTO getEvaluationBySessionId(@Param("sessionId") Long sessionId);
    
    /**
     * 更新面试会话的interview_id字段
     */
    int updateInterviewId(@Param("id") Long id, @Param("interviewId") Long interviewId);
}
